#include "head.h"

int main(){
    // 初始化线程池
    pool_t pool;
    init_pool(&pool, 3);
    // 初始化连接
    int socket_fd;
    init_tcp(&socket_fd, "192.168.8.129", "8080");

    // 监听用户连接
    int epoll_fd = epoll_create(1);
    // 放入监听
    add_epoll(epoll_fd, socket_fd);

    // 循环监听, 获取连接
    while(1){
        // 就绪集合
        struct epoll_event ready[10];
        int epoll_num = epoll_wait(epoll_fd, ready, 10, -1);

        // 判断就绪集合
        for (int i = 0; i < epoll_num; i++){
            if (ready[i].data.fd == socket_fd){
                // 说明socket对象可读 -> 新连接进来
                // 获取新连接
                int net_fd = accept(socket_fd, NULL, NULL);

                // 交给队列
                // 共享资源的访问加锁
                pthread_mutex_lock(&pool.pthread_lock);
                // 入队
                en_queue(&pool.queue, net_fd);
                // 唤醒一个子线程去队列中拿任务/客户端连接
                pthread_cond_signal(&pool.cond);
                // 解锁
                pthread_mutex_unlock(&pool.pthread_lock);
            }
        }
    }
    return 0;
}
